Linux Helper (SCL) Installation

Smart Compatibility Layer is available from Incredibuild for Windows release 10.22 and later.

Smart Compatibility Layer is available from Incredibuild for Windows release 10.22 and later.

Smart Compatibility Layer

Incredibuild Smart Compatibility Layer (SCL) allows users to use Linux machines as Helpers in an Incredibuild for Windows grid. These Linux machines can assist in builds initiated from Windows machines seamlessly.

By using Linux machines instead of Windows machines, users can reduce the cost of their existing Incredibuild infrastructure in the cloud (AWS, Azure, or GCP). In addition, users who were reluctant to grow their on-prem Incredibuild infrastructure in the cloud because of the high cost of cloud instances, can now re-consider and possibly accelerate their builds further.

SCL Agents run as containers on the Linux host. There is no need to install anything other than a standard container environment, such as Docker or Podman, which means that they are extremely simple to deploy and use.

Smart Compatibility Layer utilizes Wine as its foundation layer. However, SCL significantly extends and customizes Wine to integrate seamlessly with Incredibuild’s parallelization, caching, and distribution technologies. This unique combination ensures a robust and efficient environment for accelerating Windows workloads on Linux systems.

Host Requirements

  • Run an Ubuntu 22.04 container (the SCL container runs Ubuntu 22.04)

  • Docker or Podman

  • 8 cores (x64) or more

  • 2-4 GB of RAM per core

  • Do not run additional CPU-intensive processes on the host

  • Do not over-provision cores onto the container beyond the physical cores of the host

  • Other requirements are as described in System Requirements

For best performance, we recommend a single SCL container on hosts with 8-16 cores: this is the simplest method to deploy SCL. In a cloud environment, use machine types with 8 cores to get the best cost/performance with SCL.

If the host has more than 16 cores, which is typical for on-prem servers, multiple SCL containers are recommended (see the example script below). Selecting the exact container configuration may require some trial-and-error, contact your Customer Success Manager for assistance.

Running a Single SCL Container per Host

Run the following command on the Linux host:

Copy
COORD=192.168.1.1 && \ 
IBVER=10.24.0 && \ 
docker run --detach --restart unless-stopped \ 
       --hostname $HOSTNAME \ 
       --name IncredibuildHelper \ 
       --env COORD_IP=$COORD \ 
       --network host \ 
       public.ecr.aws/incredibuild/scl:latest_$IBVER 

Replace the Coordinator IP address (192.168.1.1) and Incredibuild version (10.22.0) in the script to match the IP address and Incredibuild version of your Coordinator.

Running Multiple SCL Containers per Host

Run the following script (or similar) on the Linux host:

Copy
COORD=192.168.1.1 && \ 
IBVER=10.24.0 && \ 
CORES_PER_CONTAINER=8 && \ 
TOTAL_CORES=$(nproc) && \ 
NUM_CONTAINERS=$((TOTAL_CORES / CORES_PER_CONTAINER)) && \ 
START_SERVICE_PORT=31105 && \ 
START_HELPER_PORT=31106 && \ 
for i in $(seq 0 $((NUM_CONTAINERS - 1))); do \ 
  SERVICE_PORT=$((START_SERVICE_PORT + (i * (CORES_PER_CONTAINER + 1)))) && \ 
  HELPER_PORT=$((START_HELPER_PORT + (i * (CORES_PER_CONTAINER + 1)))) && \ 
  docker run --detach --restart unless-stopped \  
       --hostname "SCL${i}_${HOSTNAME}" \  
       --name "SCL${i}_${HOSTNAME}" \  
       --cpus=$CORES_PER_CONTAINER \ 
       --env COORD_IP=$COORD \  
       --env SERVICE_PORT=$SERVICE_PORT \ 
       --env HELPER_PORT=$HELPER_PORT \ 
       --env HELPER_CORES=$CORES_PER_CONTAINER \ 
       --network host \ 
       public.ecr.aws/incredibuild/scl:latest_$IBVER ; \ 
done

Replace the Coordinator IP address (192.168.1.1) and Incredibuild version (10.23.0) in the above script to match the IP address and Incredibuild version of your Coordinator. Replace the cores per container (8) with the number of cores you want to allocate to each container (recommended 8 or 16).

Limitations

SCL accelerates the following tools only (tasks using other tools are not supported and are not distributed to SCL Helpers):

  • Cl.exe

  • Cl-filter.exe

  • Clang.exe

  • ShaderCompileWorker.exe (Unreal Engine)